<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>逻辑表达式</title>
    </head>
    <body>
        <script>
            // 逻辑运算符
            // 非       !
            // 与       &&
            // 或       ||

            // 非运算
            // !表示“非”，也可以称为“置反运算”
            // !是一个“单目运算符”，只需要一个操作数
            // 置反运算的结果一定是布尔值
            // !true        // false
            // !false       // true
            // !0           // true
            // !undefined   // true
            // !''          // true
            // !'imooc'     // false

            // !!true       //true
            // !!0          //false
            // !!''         //false
            // !!'imooc'    //true
            // 两个感叹号表示将他自身的布尔值表现出来


            // 与运算
            // &&表示“并且”，称为“与运算”，口诀：都真才真
            // true && true     // true
            // true && false    // false
            // false && true    // false
            // fasle && false   // false


            // 或运算
            // ||表示“或者”，称为“或运算”，口诀：有真就真
            // true || true     // true
            // true || false    // true
            // false || true    // true
            // false || false   // false



            // 短路计算
            // a && b 都真才真 如果a真，表达式值为；a假，表达式值为a
            // 3 && 6           // 6
            // undefined && 15  // undefined
            // 15 && undefined  // undefined
            // null && 2        // null
            // '' && 16         // ''
            // NaN && undefined // NaN
            // a || b 有真就真 如果a真，表达式值为a；a假，表达式值为b
            // 3 || 6           // 3
            // 0 || 6           // 6
            // null || undefined    // undefined
            // 'a' || 'b'       // 'a'
            // NaN || null      // null


            // 逻辑运算顺序
            // 逻辑运算的优先级是： 非->与->或
            // !true || true        // true
            // 3 && 4 || 5 && 6     // 4
        </script>
    </body>
</html>